#ifndef __IGRAPHICSITEM_H_
#define __IGRAPHICSITEM_H_

#include <MCPlaneItem.h>
#include <memory>
#include <IGripPoint.h>
#include <vector>

class MCColor;

enum ItemVisibility
{
    Visible,
    Invisible
};

enum ItemHighlight
{
    NoHightlight,
    Selected,
    Hovered
};

class IGraphicsItem
{
public:

    virtual void setColor(const MCColor &color) = 0;
    virtual void setFillColor(const MCColor &color) = 0;
    virtual void setThickness(double thickness) = 0;
    virtual void setLayerIndex(int layerIndex) = 0;

    virtual void select() = 0;
    virtual void deselect() = 0;
    virtual bool isSelected() = 0;
    virtual void hoverEnter() = 0;
    virtual void hoverLeave() = 0;
    virtual void setHighlight(ItemHighlight highlight) = 0;
    virtual void setVisible(ItemVisibility visibility) = 0;

    virtual std::vector<IGripPoint *> grips() = 0;
    virtual void setGripAt(IGripPoint *grip, const MCPoint2D &pos) = 0;
    virtual void resetGrips() = 0;

};

#endif // !__IGRAPHICSITEM_H_
